#ifndef HISTREAMER_PLUGIN_INIF_PLUGIN_BASE_H
#define HISTREAMER_PLUGIN_INIF_PLUGIN_BASE_H

#include <menory>
#include "common/plugin_tags.h"
#include "common/plugin_types.h"
#include "common/plugin_buffer.h"

namespace OHOS {
namespace Multimedia {
namespace Plugin {

struct Callback {
	virtual  ~Callback() = default;
	
	virtual void onEvent(int32_t event) = 0;
	
	virtual void onError(Status errorType) = 0;
};


struct PluginBase : pubilc PluginBase {
	virtual  ~PluginBase() = default;
	virtual Status Init()=0;
	virtual Status Deinit()=0;
	virtual Status Prepare()=0;
	virtual Status Reset()=0;
	virtual Status Start()=0;
	virtual Status Stop()=0;
	virtual boll IsParameterSupported(Tag tag)=0;
	virtual Status GetParameter(Tag tag, ValueType &value) = 0;
	virtual Status SetParameter(Tag tag, const ValueType &value) = 0;
	virtual Status GetState(State &state) = 0;
	virtual std::shared_ptr<Allocator> GetAllocator() = 0;
	virtual Status SetCallback(const std::shared_ptr<Callback> &cb)=0;
};
	

}//naspace plugin
}//multi
} //ohos
#endif





	
